springboot内嵌tomcat优化 | 您所在的位置:网站首页 › springboot 集成tomcat › springboot内嵌tomcat优化 |
可以在外挂的配置文件application.properties中优化tomcat配置
在spring-configuration-metadata.json文件中相关tomcat配置 server.tomcat.accept-count:等待队列长度,默认100 server.tomcat.max-connections:最大可连接数,默认10000 server.tomcat.max-threads:最大工作线程数,默认200 server.tomcat.min-spare-threads:最小工作线程数,默认10 server.tomcat.accesslog.enabled=true 开启access日志 server.tomcat.accesslog.directory=/var/www//tomcat 日志存放的路径 server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D 日志格式为:请求的host主机地址,时间,方式,路径,协议,状态,返回字节数,处理时间 注意:默认配置下,连接数超过10000后出现拒接连接情况;触发的请求超过200+100后拒绝处理 定制内嵌tomcat开发 相关参数: keepAliveTimeOut:多少毫秒后不响应的断开keepalive maxKeepAliveRequests:多少次请求后keepalive断开失效 keepAlive简介:参考这里 优点: Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。,长连接能够保证服务器和客户端的socket能够高效利用,减少握手等额外的开销。 缺点:但是,对于负担较重的网站来说,这里存在另外一个问题:虽然为客户保留打开的连 接有一定的好处,但它同样影响了性能,因为在处理暂停期间,本来可以释放的资源仍旧被占用。当Web服务器和应用服务器在同一台机器上运行时,Keep-Alive功能对资源利用的影响尤其突出。 内嵌tomcat设置方法: 实现 WebServerFactoryCustomizer 具体如下: 1 import org.apache.catalina.connector.Connector; 2 import org.apache.coyote.http11.Http11NioProtocol; 3 import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer; 4 import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; 5 import org.springframework.boot.web.server.ConfigurableWebServerFactory; 6 import org.springframework.boot.web.server.WebServerFactoryCustomizer; 7 import org.springframework.stereotype.Component; 8 9 //当Spring容器中没有TomcatEmbeddedServletContainerFactory这个bean时,会把此bean加载进容器 10 @Component 11 public class WebServerConfiguration implements WebServerFactoryCustomizer { 12 13 @Override 14 public void customize(ConfigurableWebServerFactory factory) { 15 //使用工厂类定制tomcat connector 16 ((TomcatServletWebServerFactory)factory).addConnectorCustomizers(new TomcatConnectorCustomizer() { 17 @Override 18 public void customize(Connector connector) { 19 Http11NioProtocol protocol= (Http11NioProtocol) connector.getProtocolHandler(); 20 //设置30秒无响应则断开keepalive 21 protocol.setKeepAliveTimeout(30000); 22 //设置最大10000次请求后则断开keepalive 23 protocol.setMaxKeepAliveRequests(10000); 24 } 25 }); 26 } 27 }
|
CopyRight 2018-2019 实验室设备网 版权所有 |